<html>
<body>
Reports thread-blocking method calls in code fragments where threads should not be blocked.

<p><b>Example (Project Reactor):</b></p>
<pre><code lang="java">
Flux.just("1").flatMap(f -&gt; {
    Flux&lt;String&gt; just = loadUsersFromDatabase();
    just.toIterable(); // Error: blocking operator call in non-blocking scope
    return just;
  }
);
</code></pre>

<p>Consider running blocking code <a href="https://projectreactor.io/docs/core/release/reference/#faq.wrap-blocking">with a proper
  scheduler</a>, for example <code>Schedulers.boundedElastic()</code>, or try to find an alternative non-blocking API.</p>

<br/>

<p><b>Example (Kotlin Coroutines):</b></p>
<pre><code lang="kotlin">
suspend fun exampleFun() {
    Thread.sleep(100); // Error: blocking method call inside suspend function
}
</code></pre>

<p>Consider running blocking code <a href="https://kotlinlang.org/docs/coroutine-context-and-dispatchers.html">with a special dispatcher</a>,
  for example <code>Dispatchers.IO</code>, or try to find an alternative non-blocking API.</p>

<!-- tooltip end -->
<p>Configure the inspection:</p>
<ul>
  <li>In the <b>Blocking Annotations</b> list, specify annotations that mark thread-blocking methods.</li>
  <li>In the <b>Non-Blocking Annotations</b> list, specify annotations that mark non-blocking methods.</li>
</ul>
<p>Specified annotations can be used as <a href="https://www.jetbrains.com/help/idea/external-annotations.html">External Annotations</a></p>
</body>
</html>